通常系統檢測會有分幾個大方向,我們可以從[Day01]資安x軟體生命週期x原始碼檢測中,了解什麼階段有什麼對應的方式,以及為何我們要做原始碼檢測,以下簡單的介紹有幾種方式:
使用被測程式內部如何工作的資訊,允許測試人員對程式內部邏輯結構及有關資訊來設計和選擇測試案例,對程式的邏輯路徑進行測試。其測試基於覆蓋全部程式碼、分枝、路徑、條件。
測試人員完全不考慮程式內部的邏輯結構和內部特性,只依據程式的需求規格說明書,檢查程式的功能是否符合它的功能性說明的測試方法。主要是在系統測試階段時採用。
基於被測試程式邏輯結構的基礎上,從系統功能介面上設計測試案例。通常是作為黑箱測試的補充或在黑箱發現缺陷以後,回到原始程式碼分析原因確認問題時採用。
引用至林維展大大的原文
在軟體生命週期(SDLC)中,我們會先介紹靜態原始碼分析。
事實上,現在在業界已經有很多公司都已經有採用這樣的方式來控管軟體資安品質。
不過在業界最真實的狀況是:「金融監督管理委員會」已經將「原始碼檢測」列為法規之一
所以,在台灣,證券、壽險、銀行及一級國家單位已經列入需要檢核的範圍之內了…
就是金管會強制規定的這樣… =v="
為了不會再有金融資安事件的發生,所以相對的對金融單位會有較嚴格的把關。
當然,後續會慢慢普及至政府機關、大型企業,不過,我想大概都要有事件發生吧 =v="
接下來大概簡單介紹一下幾個常用的靜態原始碼檢測軟體 =v=+不是工商時間的心得文…
用過幾款其他工具,但有時候拿Sample Code掃描出來都沒有弱點 XD
比較不穩健就是了,有空也是可以嘗試下載其他工具用看看:
ITS4 是由 Cigital 公司制定發佈的一款自動化程式碼安全審查的工具。
ITS4 針對 C 及 C++ 程式語言提供簡易的靜態分析,以發現潛在的安全問題。
本專案使用的是命令列執行的方式進行,支援 Windows 及 Unix 平台。
適用平台: Windows/Linux/BSD
資料來源: http://www.cigital.com/its4/
JeSS 是一個 Eclipse IDE 的外掛插件。
提供針對 Java 程式語言的靜態安全程式掃描器,得以發現潛在的程式安全問題。
適用平台: Windows/Linux/BSD/MacOS
資料來源: http://sourceforge.net/projects/jsecscanner/
Clint 是一款為靜態程式原始碼安全檢測的試驗平台。
它目前可以用來檢查常見的 C++ 程式語言的錯誤,並且提出改進的建議。
適用平台: Linux/BSD
資料來源: http://sourceforge.net/projects/clint/
Graudit 是一個簡單的 script 腳本和特徵碼集合的工具組,讓你可以找到潛在的程式源碼安全漏洞。
這功能相當於使用靜態分析方式,支援 ASP, JSP, Perl,PHP 及 Python。
適用平台: Linux/BSD
資料來源: http://www.justanotherhacker.com/projects/graudit.html
Findbugs 是一個可以提供靜態程式源碼分析的工具。針對 Java 程式語言的特性來除錯。
適用平台: Windows/Linux/BSD/MacOS
資料來源: http://findbugs.sourceforge.net/
PMD 是一款專為 Java 程式語言安全分析的工具。
它可以發現沒有使用到的 Java 變數,空的 catch 區塊,沒有必要的物件產生等問題。
其它功能還包括提出更佳撰寫方式的建議。
適用平台: Windows/Linux/BSD/MacOS
資料來源: http://sourceforge.net/projects/pmd/